package com.cly.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cly.dto.CourseDto;
import com.cly.entity.Course;
import com.cly.entity.CourseUser;
import com.cly.result.JsonRequest;
import com.cly.vo.CourseVo;

import java.util.List;

/**
 * 课程表业务层接口
 *
 * @author 春风能解释
 * <p>
 * 2024-06-06
 */
public interface ICourseService extends IService<Course> {

    /**
     * 根据条件查询课程表信息
     *
     * @param current 页码
     * @param size    页长
     * @param course  课程表条件
     * @return JSON
     */
    JsonRequest<List<CourseVo>> lookCourse(Integer current, Integer size, Course course);


    /**
     * 新增一条课程表信息
     *
     * @param courseDto 课程表信息
     * @return JSON
     */
    JsonRequest<Integer> addOneCourse(CourseDto courseDto);

    /**
     * 修改一条课程表信息
     *
     * @param course 课程表信息
     * @return JSON
     */
    JsonRequest<Integer> updateOneCourse(Course course);

    /**
     * 批量删除课程表信息
     *
     * @param ids 课程表ID列表
     * @return JSON
     */
    JsonRequest<Integer> deleteCourses(List<Long> ids);

    /**
     * 根据用户ID查询课程表信息
     *
     * @param userId 用户ID
     * @return JSON
     */
    JsonRequest<List<Course>> lookCourseByUser(Long userId);

    /**
     * 添加用户课程关联
     *
     * @param courseUser 用户课程关联
     * @return JSON
     */
    JsonRequest<Boolean> addCourseUser(CourseUser courseUser);

    /**
     * 删除用户关联
     *
     * @param ids ID
     * @return JSON
     */
    JsonRequest<Boolean> removeCourseUser(List<Long> ids);
}